﻿// ==UserScript==
// @name          保存会员信息
// @namespace     http://www.ucoolweb.com
// @description   收集世纪佳缘交友网会员搜索结果页你喜欢的会员信息，并把它们保存成本地HTML文件，以方便日后查阅。
// @include       http://search.jiayuan.com/result.php*m=1*
// ==/UserScript==

/**
 * 定义一个类
 */
function clsJiaYuan()
{
	/**
     * 定义getElementById快捷方式
     * @param {String} objId DOM ID
     * @return {DOM}
     */
    var $ = function(objId)
    {
        return document.getElementById(objId);
    }
    
	/**
	 * 定义getElementsByTagName快捷方式
	 * @param {String} tagName 标签名
	 * @return {Array} DOM Array
	 */
    var $$ = function(tagName)
    {
        return document.getElementsByTagName(tagName);
    }
    
    /*
     if (window.HTMLElement)
     {
     HTMLElement.prototype.$=$;
     HTMLElement.prototype.$$=$$;
     }
     */
	
	/**
	 * 按样式名查找DOM对象
	 * @param {String} className 要查找的样式名，即标签的class属性值
	 * @param {String} tagName 筛选标签名，可选参数，用于缩小查找范围
	 * @return {Array} DOM Array
	 */
    var getElementsByClassName = function(className, tagName)
    {
        var selector = tagName || '*';
        var allDom = $$(selector);
        
        var domList = [];
        for (var i in allDom) 
        {
            if (allDom[i].className == className) 
            {
                domList[domList.length] = allDom[i];
            }
        }
        
        return domList;
    }
    
	/**
	 * 创建每个会员头像下的复选框
	 */
    var createCheckBox = function()
    {
        var photoBoxs = getElementsByClassName('searh_photobox', 'div');
        for (var a in photoBoxs) 
        {
            var infoList = photoBoxs[a].getElementsByTagName('a');
            //提取会员信息
            var url = infoList[0].href;
            var face = infoList[0].getElementsByTagName('img')[0].src;
            var name = infoList[0].getElementsByTagName('img')[0].alt;
            //处理高级会员信息HTML
			if (infoList.length == 4) 
            {
                var about = infoList[2].innerHTML;
            }
            else 
            {
                var about = infoList[3].innerHTML;
            }
            //插入复选框HTML
            photoBoxs[a].getElementsByTagName('li')[3].innerHTML = '<label><input type="checkbox" name="love" value="' + url + '|' + face + '|' + name + '|' + about + '" />收藏</label>';
            //注册复选框单击处理函数
			photoBoxs[a].getElementsByTagName('input')[0].addEventListener('click', jiaYuan.outputHtml, true);
        }
    }
    
	//创建HTML代码输出文本域
    var createTextBox = function()
    {
        var loveCodeDom = document.createElement('textarea');
        loveCodeDom.id = 'loveCode';
        loveCodeDom.rows = 5;
        var pageBox = getElementsByClassName('pageclass', 'div')[1];
        pageBox.appendChild(loveCodeDom);
        $('loveCode').style.width = '640px';
        $('loveCode').style.margin = '10px';
    }
    
	//输出或更新选择会员HTML代码，在单击复选框时调用
    this.outputHtml = function()
    {
        var loveHtml = '';
        var loveCheckBoxs = document.getElementsByName('love');
        for (var i in loveCheckBoxs) 
        {
            //只输出复选框打勾的会员信息
			if (loveCheckBoxs[i].checked) 
            {
                var infoList = loveCheckBoxs[i].value.split('|');
                var liHtml = '<li><a href="' + infoList[0] + '" target="_blank"><img src="' + infoList[1] + '" /></a><strong>' + infoList[2] + '</strong><span>' + infoList[3] + '</span></li>';
                loveHtml += liHtml;
            }
        }
        $('loveCode').value = loveHtml;
        $('loveCode').select(); //让文本域代码处于选中状态，方便快速复制
    }
    
	//程序初始化公开方法
    this.init = function()
    {
        createCheckBox();
        createTextBox();
    }
}

//实例化一个类
var jiaYuan = new clsJiaYuan();
jiaYuan.init();
